package com.dragon.pear.modules.trade.web.model.params.search;

import io.swagger.v3.oas.annotations.media.Schema;

/**
 * @author Chris Chan
 * Create on 2025-09-30 22:06
 * Use for: 订单 数据搜索请求参数
 * Explain:
 * 
 */
@Schema(description = "订单 搜索参数")
public class TradeGoodsOrderSearchParam {
    @Schema(description = "ID", example = "1")
    private long id;
    @Schema(description = "订单编号 雪花算法", example = "1")
    private long code;
    @Schema(description = "用户账号", example = "1")
    private long accountCode;
    @Schema(description = "关联商品编码", example = "1")
    private long goodsCode;
    @Schema(description = "实付价格", example = "1")
    private double price;
    @Schema(description = "订单创建时间", example = "1")
    private long time;
    @Schema(description = "订单状态 0 - 待付款, 1 - 待发货, 2 - 待收货,3 - 待评价,4 - 已取消", example = "1")
    private int orderStatus;

    // 无参构造方法
    public TradeGoodsOrderSearchParam() {
    }

    // 全参数构造方法
    public TradeGoodsOrderSearchParam(long id, long code, long accountCode, long goodsCode, double price, long time, int orderStatus) {
        this.id = id;
        this.code = code;
        this.accountCode = accountCode;
        this.goodsCode = goodsCode;
        this.price = price;
        this.time = time;
        this.orderStatus = orderStatus;
    }

    // 全参数create生成器
    public static TradeGoodsOrderSearchParam create(long id, long code, long accountCode, long goodsCode, double price, long time, int orderStatus) {
        return new TradeGoodsOrderSearchParam(id, code, accountCode, goodsCode, price, time, orderStatus);
    }

    // 全参数of生成器
    public static TradeGoodsOrderSearchParam of(long id, long code, long accountCode, long goodsCode, double price, long time, int orderStatus) {
        return new TradeGoodsOrderSearchParam(id, code, accountCode, goodsCode, price, time, orderStatus);
    }
    // region Getter和Setter方法
    public long getId() {
        return id;
    }

    public TradeGoodsOrderSearchParam setId(long id) {
        this.id = id;
        return this;
    }

    public long getCode() {
        return code;
    }

    public TradeGoodsOrderSearchParam setCode(long code) {
        this.code = code;
        return this;
    }

    public long getAccountCode() {
        return accountCode;
    }

    public TradeGoodsOrderSearchParam setAccountCode(long accountCode) {
        this.accountCode = accountCode;
        return this;
    }

    public long getGoodsCode() {
        return goodsCode;
    }

    public TradeGoodsOrderSearchParam setGoodsCode(long goodsCode) {
        this.goodsCode = goodsCode;
        return this;
    }

    public double getPrice() {
        return price;
    }

    public TradeGoodsOrderSearchParam setPrice(double price) {
        this.price = price;
        return this;
    }

    public long getTime() {
        return time;
    }

    public TradeGoodsOrderSearchParam setTime(long time) {
        this.time = time;
        return this;
    }

    public int getOrderStatus() {
        return orderStatus;
    }

    public TradeGoodsOrderSearchParam setOrderStatus(int orderStatus) {
        this.orderStatus = orderStatus;
        return this;
    }

    // endregion Getter和Setter方法
}
